package br.com.caelum.notasfiscais.mb;

import java.util.List;

import javax.enterprise.inject.Model;
import javax.inject.Inject;

import br.com.caelum.notasfiscais.dao.ProdutoDao;
import br.com.caelum.notasfiscais.modelo.Produto;
import br.com.caelum.notasfiscais.tx.Transactional;
import br.com.caelum.notasfiscais.util.EmailComercial;

@Model
public class ProdutoBean {
	
	@Inject
	private Produto produto;
	
	@Inject
	private ProdutoDao produtoDao;
	
	private List<Produto> produtos;
	
	@Inject @EmailComercial
	private String email;


	public Produto getProduto() {
		return this.produto;
	}
	
	public void setProduto(Produto produto) {
		this.produto = produto;
	}
	
	@Transactional
	public void grava() {
		
		if (produto.getId() == null) {
			produtoDao.adiciona(produto);
			System.out.println("Notifica" + email + ": novo produto cadastrado");
		}else{
			produtoDao.atualiza(produto);
		}
		//Limpa o formulario
		this.produto = new Produto();
		//Atuliza os valores na tabela
		this.produtos = produtoDao.listaTodos();
		
	}
	
	public void remove(Produto produto) {
		produtoDao.remove(produto);
		this.produtos = produtoDao.listaTodos();
	}

	public List<Produto> getProdutos() {
		if (produtos == null) {
			System.out.println("Carregando produtos...");
			produtos = new ProdutoDao().listaTodos();
		}

		return produtos;
	}
	
	public double somaPrecos() {
		double soma = 0;
		for (Produto produto : produtos) {
			Double preco = produto.getPreco();
			soma = soma + preco;
		}
		
		return soma;
	}
}
